1. Field of Invention
This invention relates to a software development system for digital signal processors (DSP), in particular fixed point DSP's and other programmable devices for the ease of programming, debug, and porting of code to other brands and types of digital signal processors.
2. Description of Related Art
There are several existing software development tools available for particular brands or types of DSP's. The trend in the architecture of these tools is to migrate to high level language for ease of programming, such as C language. C language compilers can deal well with numeric behaviors but are inefficient in real-time code generation and the usage of memory. Another approach is to program DSP's in low level language, such as assembly language. The low level language can handle real-time behaviors and achieve the best optimized code. However, the low level language has difficulty handling numeric behaviors and is difficult to debug causing long development time. In addition there is a growing need to produce code that can be ported to DSP's of different manufacturers and other general purpose programmable devices, such as RISC or CISC microprocessors. This entails considerable rewrite to adjust to a different architecture. Coupled with this is the need to translate digital formats during code development and debug. This is particularly acute for a fixed point processor that is dealing with floating point operations and usually requires tedious time consuming conversions during debug using a hand calculator or the equivalent to check whether the correct data is being generated. In addition code developed in DSP assembly language is time consuming and using a higher level language, like C programming language, for a fixed point DSP can create problems because of inconsistent code optimization and truncation error. Referring to In U.S. Pat. No. 5,375,228 (Leary et al.) is described an emulation system to debug software for a DSP. This is an application dependent configuration which integrates a digital signal analyzer into a specific DSP emulation system and does not appear easily portable to other configurations..
Commercial vendors for DSP products, such as IBM which sells its DSP under the brand name "Mwave", provide development tool kits for programming and debug of application software to run their DSP. The tool kit allows programming in C language or in assembly language, and real time debugging with data being displayed on the computer system monitor. As with other vendors, this tool kit does not provide the capability to easily port code for use with other types and makes of DSP's.
Existing development tools are available for a single type DSP and do not provide a universal capability that can easily produce code for various DSP types and brands. Thus the porting of code to other brand of DSP entails a considerable rewrite and additional debug. Working with fixed point DSP's requires a considerable amount of effort in the debug phase to manually convert to other numerical formats that are used in the program by using hand calculators or equivalent. After a program is written and found to be useful, it is often a time consuming and difficult task to adapt the code for another DSP. Determining which floating point, decimal and thirty-two bit formats were intended for an integer DSP program is difficult especially when it is not being done by the original programmer. For situations where various types and brands of DSP are being used, there is a need for a universal programming environment which allows for easy debug and porting of code.
There are currently two common approaches in developing DSP software. One is to use high level language tools, such as C-language. Numerous C compilers can deal well with numeric behaviors but are not as efficient in real-time code-generation as well as memory usage. The second approach is to use low level language tools, such as assembly language. The low level language can handle real-time behaviors and achieved the most optimized implementation, but has difficulty handling numeric behaviors that in turn cause a long development time. Recently, there has been considerable effort focused on adding more real-time control tools to high level language compilers. This makes the high level language compiler very complicated, and yields little improvement to new algorithms; therefore, a lot of embedded applications are still developed by using assembly languages. Numeric software bugs are normally manifested through inaccuracy in numeric analysis or large scale collective analysis, such as LMS, waveform, and spectrum analysis, and the debugging involves large amounts of mathematical analysis, including the conversion from one data format to another.